G2. 折线图和连线图

整理: 冀云阳 (广东财经大学)
邮箱:

实证分析中往往需要以图形的方式更直观的呈现结果,常用的包括:折线图、连线图和线性拟合图。本讲将通过3个小节重点介绍实证分析中常用类型图形的绘制方式。

G2.1 折线图

输入 help twoway line 可以查看折线图的帮助文件。这里以 Stata 自带的 sp500.dta 数据为例,来演示其基本使用方法。

首先,我们来绘制一副最简单的的折线图:只需指定纵轴 (high) 和横轴变量 (date) 即可:

. sysuse sp500,clear
. twoway line high date

输出图形如下:

上面这个图形存在一些问题,比如横轴的最右侧的刻度标签出边了,纵轴刻度默认为横置,不太符合多数期刊的排版要求。此时,我们可以通过附加选项来美化图形:

#delimit ;
twoway line high low date  in 1/20, /// 只绘制前20个样本
         scheme(s1mono)               ///  黑白模板
         xlabel(,angle(50))           /// 不设定X轴标签的数值和个数,位置旋转50度
         ylabel(,angle(0) grid)       /// 不设定Y轴日期标签的显示格式和最优分割点,标签位置正常,增加浅色的横线
         ymtick(##5)                  /// Y轴的两个显示刻度之间增加5个小的刻度,但不附加文字说明
        lpattern(solid dash)         ///折线的类型,分别是实线和虚线
        lcolor(green*1.2 black*0.7)  /// 折线的颜色,分别是标准绿色的加重(1.2)和标准黑色的淡化(0.7)
        lwidth(*1.2 *1.3)            /// 折线的加粗或变细
        graph export "$path\_Results\myline.wmf", replace ///图形绘制完成之后,可以进行保存,选择输出为wmf格式,以便插入word。

执行上述命令后可得下图:

G2.2 连线图/简介

连线图的绘制命令为:twoway connect,设定与折线图相似,图形中加入了许多连接符,更加明显的呈现样本的位置。 下面以一个例子来说明连线图的绘制,首先调入数据,来计算大学毕业与否两组样本在 1968-1988 年期间的平均值:


 use "nlswork.dta", clear   
browse idcode year collgrad ln_wage /// /*查看原始数据*/ 
gen wage = exp(ln_wage)             ///工资的对数值转换为水平值
replace year = year+1900           ///年份转换为公元纪年
bysort collgrad year: egen mwage = mean(wage) /// 根据年份和毕业与否,计算每一类别的妇女的平均工资

keep collgrad year mwage  /// 只保留绘图所用到的三个变量
duplicates drop collgrad year, force  /// 删除重复值

xtset year collgrad   ///设置面板数据
gen diff = D.mwage ///计算一阶差分值

twoway (connect mwage year if collgrad==0)    
       (connect mwage year if collgrad==1)   
      (connect diff  year), ///  画了三个类别的折线
      scheme(s1mono)        
      ytitle("Mean Wage")   ///  Y轴的标题
      ylabel(2(1)10, angle(0) grid) /// Y轴的标签
      xlabel(1968(2)1988, grid)     ///   X轴的标签
      legend(label(1 "Non College Graduate") ///  图例的说明
      label(2 "College Graduate")     
      label(3 "Difference")           
      col(1) ring(0) position(11))  /// 图例的位置是在11点钟的位置(position),ring在绘图区中

执行上述命令后可得下图:

G2.3 线性拟合图

ols 回归的线性拟合图和非线性拟合图的绘制命令分别为: 
 twoway lfit
 twoway qfit  

下面以一个例子进行说明,首先调入数据,

    sysuse auto, clear
    twoway (scatter price weight) (lfit price weight)   绘制两个图:散点图和拟合线

分组绘制拟合图,例如分别绘制进口车和国产车各自的散点和拟合线
twoway (scatter price weight if foreign==1) 
      (lfit price weight if foreign==1)
      (scatter price weight if foreign==0) 
       (lfit price weight if foreign==0) , 
       legend(label(1 "Foreign")
         label(2 "")
         label(3 "Demestic")
         label(4 "")
         position(4) ring(0)
     )

执行上述命令后可得下图:

此外,我们还可以利用外部命令 aaplot,更加简单直接的呈现两个变量之间的线性关系:

aaplot gpm weight

加入选项之后的复杂形式为:

    aaplot gpm weight,  ///
           lopts(lcolor(black*0.8) lpattern(dash)) ///
           aformat(%04.3f)     ///
           bformat(%06.4f)     ///
           rmseformat(%4.3f)   ///
           scheme(s1mono)